// 观察者没有事件中心,只有发布者和订阅者
// 订阅者也就是观察者
// 观察者必须有一个update方法,方法会在事件发生的是够被触发
// 发布者有一个subs数组存储所有的观察者,有一个notify方法来通知观察者进行update,还有一个添加观察者的addSub方法

// 不考虑传参的情况
class Dep {
  constructor() {
    this.subs = [];
  }

  addSub(sub) {
    // 传递的对象必须要有update方法
    if (sub && sub.update) {
      this.subs.push(sub);
    }
  }
  notify() {
    this.subs.forEach((sub) => {
      sub.update();
    });
  }
}

class Watcher {
  update() {
    console.log("update");
  }
}

// 测试
let dep = new Dep();
let watcher = new Watcher();
dep.addSub(watcher);
dep.notify();
